/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.commands;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import src.Command;
import src.ListaUsuarios;
import src.Permisos;
import src.Usuario;
import src.exceptions.eBorrarUsuario;
import src.exceptions.eSessionNoValida;

/**
 *
 * @author pabloavila
 */
public class DoEditUser implements Command{

    // Atributos
    private Usuario u;
    private ListaUsuarios lu;
    HttpSession ses;
    private String n;
    private String per;


    public DoEditUser(HttpServletRequest request, HttpServletResponse response) {
        // Intentamos coger los parametros que nos interesan
        // Que son un usuario y la lista de usuarios
        this.ses = request.getSession(false);
        if (ses != null){
            this.n = (String) ses.getAttribute("edit"); // OJO!!
            this.per = (String) ses.getAttribute("per");
            this.lu = (ListaUsuarios) ses.getAttribute("ses_list");
        }
        
    }

    @Override
    public void Execute() {
        // Eliminar el usuario a la lista
        try {
            if (this.ses != null && this.n != null && this.per != null && this.lu != null){

                // Cogemos el usuario
                u = lu.getUsuario(n);
                // Y modificamos los permisos
                Permisos p;
                if(per.equals("GUEST")) p = Permisos.GUEST;
                else if (per.equals("USER")) p = Permisos.USER;
                else if (per.equals("ADMIN")) p = Permisos.ADMIN;
                else p = Permisos.GUEST;
                // Le asignamos el permiso que nos han pasado por parametro
                u.setPermisos(p);
                ses.setAttribute("ses_notify","Permisos modificados con exito");
                ses.setAttribute("ses_sign",true);


                }
            else {
                ses.setAttribute("ses_notify", "Error: no se han podido cambiar los permisos");
                ses.setAttribute("ses_sign",false);
                throw new eSessionNoValida("Error: No se han podido cambiar los permisos");
            }
        }        
        catch (eSessionNoValida ex){
            // Coger la excepcion
        }

        
    }

}
